import Vue from 'vue'
import router from './router'
import ax from 'axios'
import qs from 'qs';


const axios = ax.create({
  baseURL: 'http://localhost:8090/',
  //timeout: 1000,
  // headers: {'X-Custom-Header': 'foobar'}
  withCredentials:true // 携带身份验证信息
})
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前把传参方式从 payload 转换为formdata
   //allowDots: true  {sid:1,cls:{cid:2}}转换成formData格式是sid=1&cls[cid]=2 后台Student类中cls属性是对象不是数组
   //所以识别不了，加上allowDots: true 之后 属性拼接就使用“点”代替中括号了 即sid=1&cls.cid=2
   //allow 是允许 的意思 dots是小数点的意思
   //判断当前是post请求,并且传递的数据不是undefined,才把数据转化formData格式
   if(config.method=="post"&&config.data!=undefined){
	   config.data=qs.stringify(config.data,{ allowDots: true});
	   console.info("data参数转换之后",config.data);
   }
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

axios.interceptors.response.use(function (response) {
	// 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据
	// 否则的话抛出错误
	if (response.status === 200) {
	  return Promise.resolve(response);
	} else {
	  return Promise.reject(response);
	}
  }, function (error) {
	// 服务器状态码不是2开头的的情况
    // 对响应错误做点什么
	//alert(error.response.status);
    if (error.response.status==403) {
	   // 只有在当前路由不是登录页面才跳转
	  router.currentRoute.path !== '/' &&
		router.replace({
		  path: '/'//,
		  // query: { redirect: router.currentRoute.path },
		})
	}
	return Promise.reject(error.response);
  });
  //把axios添加到vue原型中
  Vue.prototype.$http=axios
